package com.tiancheng.trade.order.vo.api;

import jakarta.validation.Valid;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Getter;
import lombok.Setter;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 下单主订单参数
 *
 * @author kellen
 * @date 2024/2/27
 */
@Getter
@Setter
public class OrderVO {

    // 主订单号
    @NotEmpty
    private String orderId;
    // 源订单号（续单、尾款单）
    private String originalOrderId;
    // 用户id
    @NotEmpty
    private String uid;
    // 用户手机号
    private String mobile;
    // 业务渠道来源
    @NotEmpty
    private String orderSource;
    // 订单名称
    private String orderName;
    // 交易信息
    @NotEmpty
    private String tradeInfo;
    // 下单时间
    @NotNull
    private LocalDateTime createTime;
    // 支付超时时间
    private LocalDateTime payExpiryTime;
    // appId
    @NotEmpty
    private String appId;
    // ip
    private String ip;
    // 是否测试订单
    private Integer isTest;
    // 订单类型
    @NotEmpty
    private String orderType;
    // 下单场景
    @NotEmpty
    private String orderScene;
    // 主商户编号
    private String merchantCode;
    // 主商户名称
    private String merchantName;
    // 微信小程序、公众号用户标识
    private String openid;
    // 推广码
    private String generalizeCode;

    // 主订单优惠券信息
    @Valid
    private List<CouponVO> coupons;
    // 用户会员信息
    @Valid
    private VipVO vipInfo;
    // 子订单信息
    @Valid
    @NotEmpty
    private List<SubOrderVO> subOrders;
    // 结算信息
    private String settlementInfo;
    // 微信优惠信息
    private String goodsTag;

    // 设备类型
    private String appType;
    // app版本信息
    private String appVersion;

    /**
     * 系统来源
     * @see com.cloud.trade.order.enums.SystemSourceEnum
      */

    private String systemSource;
    /**
     * 业务类型
     * @see com.cloud.trade.order.enums.BusinessTypeEnum
     */
    private String businessType;

    /**
     * 订单业务类型 ： 传入 overseas 走英文版订单流程，当前为paypal支付
     * */
    private String orderBusiness;
    /**
     * 订单批次号
     */
    private String batchId;
}
